Nonvolatile BIOS memory refers to a small memory on PC motherboards that is used to store BIOS settings. It was traditionally called CMOS RAM because it used a low-power Complementary metal-oxide-semiconductor (CMOS) SRAM (such as the Motorola MC146818 or similar) powered by a small battery when system power was off. The term remains in wide use but it has grown into a misnomer: nonvolatile storage in contemporary computers is often in EEPROM or flash memory (like the BIOS code itself); the remaining usage for the battery is then to keep the real-time clock going. The typical NVRAM capacity is 512 bytes, which is generally sufficient for all BIOS settings. The CMOS RAM and the real-time clock have been integrated as a part of the southbridge chipset and it may not be a standalone chip on modern motherboards.
Contents |
CMOS mismatch errors typically occur if the computer's power-on self-test program:[1][2]
The memory and real-time clock are generally powered by a CR2032 lithium coin cell. These cells last two to ten years, depending on the type of motherboard, ambient temperature and the length of time that the system is powered off, while other common cell types can last significantly longer or shorter periods, such as the CR2016 which will generally last about 40% as long. Higher temperatures and longer power-off time will shorten cell life. When replacing the cell, the system time and CMOS BIOS settings may revert to default values. This may be avoided by replacing the cell with the power supply master switch on. On ATX motherboards, this will supply 3V standby power to the motherboard even if it is apparently "switched off", and keep the CMOS memory energized.
Some computer designs have used non-button cell batteries, such as the cylindrical "1/2 AA" used in the Power Mac G4 as well as some older IBM PC compatibles, or a 3-cell NiCd CMOS battery that looks like a "barrel" (common in Amigas and older IBM PC compatibles), which serves the same purpose.
To access the BIOS setup when the machine fails to operate, occasionally a drastic move is required. In older computers with battery-backed RAM, removal of the battery and short circuiting the battery input terminals for a while did the job; in some more modern machines this move only resets the RTC. Some motherboards offer a CMOS-reset jumper or a reset button. In yet other cases, the EEPROM chip has to be desoldered and the data in it manually edited using a programmer. Sometimes it is enough to ground the CLK or DTA line of the I²C bus of the EEPROM at the right moment during boot, this requires some precise soldering on SMD parts. If the machine lets you boot but does not want to let you into the BIOS setup, one possible recovery is to deliberately "damage" the CMOS checksum by doing direct port writes using DOS debug.exe, corrupting some bytes of the checksum-protected area of the CMOS RAM; at the next boot, the computer typically resets its setting to factory defaults. for example:
c:\debug -o 70 10 -o 71 aa -q
That will write to CMOS (Offset 10h) with the value 0AAh.